【セッションレポート】マルチリージョン構成におけるTerraformモジュール設計 #HashiTalks #HashiTalks Japan 2024

【セッションレポート】マルチリージョン構成におけるTerraformモジュール設計 #HashiTalks #HashiTalks Japan 2024

Clock Icon2024.12.04

HashiTalks 2024(2024/11/14開催)にて森 浩貴さん(株式会社ディーカレットDCP)が登壇されたセッション【マルチリージョン構成におけるTerraformモジュール設計】のレポートを本記事ではお伝えします。

https://events.hashicorp.com/hashitalksjapan

概要

弊社プラットフォームでは、クラウド環境におけるインフラの信頼性と可用性を高めるために、複数の地理的リージョンに分散されたシステムを構成しています。
本テーマでは、Terraformを用いたInfrastructure as Code (IaC)のアプローチを通じて、マルチリージョン構成を効率的に管理・運用するためのモジュール設計に焦点を当てます。例えば、リージョンごとに異なる設定を反映する動的な変数管理、コードの再利用性を高めるためのモジュール分割、複数リージョンにわたるリソースの整合性を保つための設計戦略などが挙げられます。
さらには、実際に運用しているモジュール設計において現在直面している具体的な課題を掘り下げます。例えば、モジュール間の依存関係を適切に設計しないと、プロビジョニング時にエラーが発生することがあります。特に、マルチリージョン構成では、異なるリージョンにまたがるリソースが相互に依存することがあり、依存関係を明示的に定義しないと意図しない順序でリソースが作成・破棄されるリスクがあります。

イベントサイトから引用

セッション動画

https://www.youtube.com/watch?v=_ePXNqKFkJw

レポート

自己紹介

事業内容

  • デジタル通貨プラットフォーム事業をサービス展開している
    • 銀行と事業者間のお金やサービスのやり取りをシームレスに行うプラットフォーム
  • デジタル通貨DCJPY
    • 価値が変動しない円建てのデジタル通貨
    • 銀行型のデジタル通貨
      • 発行主体は民間銀行
      • 預金として位置づけられる(預金のデジタル化)
  • 預金にある円通貨からディーカレットDCP様のプラットフォーム上でデジタル通貨を発行して、決済を行う
  • デジタル通貨プラットフォームには、Financial ZoneとBusiness Zoneの2層がある
    • Financial Zone: 金融機関が管理・運営
      • 預金口座をデジタル化
    • Business Zone: 事業者が運営・参画
      • 決済や本人確認、証書の発行
  • 分散システムを実現するために、ブロックチェーン技術を使用

モジュール設計

  • Financial Zoneは災害対策が必須のため、マルチリージョン構成を取っている
  • 商用化に伴いTerraformテンプレートをリプレースした

_Japanese__マルチリージョン構成におけるTerraformモジュール設計_-_YouTube.png

  • モジュールを3つのレベルに分けて設計した
    • リージョンレベル
    • サービスレベル
      • Networking
      • 外部公開LB
      • App Cluster
    • コンポーネントレベル
      • LB
      • アプリログStorage
      • Kubernetes
      • etc..
  • main.tfでリージョンテンプレートを呼ぶことで、メンテナンス性を高めつつ複数リージョンで同一のリソースを作成可能になった

tfstate設計

Cursor_と__Japanese__マルチリージョン構成におけるTerraformモジュール設計_-_YouTube.png

  • tfstateを3つの単位で分割した
    • base
      • ネットワークやドメイン関連リソース
    • database
    • application
  • tfstateを分割したことで、他チームのリソースに影響を与えること無くTerraform適用が可能になった

今後の課題

  • 複数リージョンへのTerraform適用に時間がかかる
    • リージョンごとのtfstateの分割を検討しているが、依存関係の複雑化や適用状況の把握が難しくなることを懸念している
  • 汎用機能とカスタマイズ機能が同じtfstateで管理されている
    • カスタマイズ部分のtfstate分離を検討している

おわりに

マルチリージョン構成の設計手法について理解が深まりました。

特に印象的だったのは、モジュールを3層構造(リージョン/サービス/コンポーネント)に分離した設計アプローチです。

この設計により、責務の明確な分離と再利用性の向上を実現しており、大規模なインフラストラクチャを効率的に管理されていました。

マルチリージョン構成のように多くのリソースを管理するケースでは、実行時間の課題が発生しています。

多くの組織が直面する課題と感じています。

tfstateを分割するのも手ですが、個人的にはTerraform Stacksに期待しています。

以上、AWS事業本部の佐藤(@chari7311)でした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.